﻿/*
 * １．設定時間の通りに起動するテスト
２．同期テスト
　■前提
　①、単件テスト
１）、管理サーバに一つ案件の一人ＯＰ情報を新規登録
２）、管理サーバに一つ案件の一人ＯＰ情報１件を修正する　　
３）、管理サーバに一つ案件の一人ＯＰ情報１件を削除

　②、複数件テスト
１）、管理サーバに一つ案件の複数ＯＰ情報（２件以上）を新規登録
２）、管理サーバに一つ案件の複数ＯＰ情報（２件以上）を修正する　　
３）、管理サーバに一つ案件の複数ＯＰ情報（２件以上）を削除
４）、管理サーバに複数案件の同じＯＰ情報を新規登録
５）、管理サーバに複数案件の同じＯＰ情報を修正する　　※複数案件が同じＭＡサーバに適用
６）、管理サーバに複数案件の同じＯＰ情報を削除　　　 　※複数案件が同じＭＡサーバに適用
７）、管理サーバに複数案件の同じＯＰ情報を新規登録
８）、管理サーバに複数案件の同じＯＰ情報を修正する　　※複数案件が異なるＭＡサーバに適用
９）、管理サーバに複数案件の同じＯＰ情報を削除　　　 　※複数案件が異なるＭＡサーバに適用
１０）、管理サーバに複数案件の同じＯＰ情報を新規登録
１１）、管理サーバに複数案件の同じＯＰ情報を修正する
１２）、管理サーバに複数案件の同じＯＰ情報を削除　　　 　※複数案件が異なるＭＡと同じＭＡサーバに適用

　■テスト確認内容
・正しく同期される
・ログが正しく表示される
※エントリ工程の組み合わせを考える必要
 * 
 * 
 * 
 */



namespace Ntt.NttData.Been.Management.SolutionA.Sync.Operator
{
    using System;
    using Common.Log;

    public static class Program
    {
        private const string ArgShowmsg = @"/show";
        private const string Agrhelp = @"/?";

        /// <summary>
        /// Mains the specified args.
        /// </summary>
        /// <param name="args">The args.</param>
        static void Main(string[] args)
        {
           
            LogHelper.WriteLog(LogType.StartAP, "D0001");
            BLL.ServiceMonitor.ShowMessage += ServiceMonitorShowMessage;

            try
            {
                if (args.Length > 0)
                {
                    string inputArgs = args[0];

                    if (inputArgs == ArgShowmsg)
                    {
                        LogHelper.WriteLog(LogType.Operation, "D0002");
                        new BLL.SyncOperator(true).Done();
                    }
                    else if (inputArgs == Agrhelp)
                    {
                        LogHelper.WriteLog(LogType.Operation, "D0003");
                        ShowHelp();
                    }
                    else
                    {
                        LogHelper.WriteLog(LogType.Operation, "D0004");
                        ShowHelp();
                    }
                }
                else
                {
                    LogHelper.WriteLog(LogType.Operation, "D0005");
                    new BLL.SyncOperator(false).Done();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(LogType.Error, "E0001");
                ErrorManager.CatchError(ex);
               
            }
            finally
            {
                LogHelper.WriteLog(LogType.Operation, "D0006");
            }
        }

        /// <summary>
        /// Services the monitor show message.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="Ntt.NttData.Been.Management.SolutionA.Sync.Operator.BLL.ProgressEventArgs"/> instance containing the event data.</param>
        static void ServiceMonitorShowMessage(object sender, BLL.ProgressEventArgs e)
        {
            Console.WriteLine(e.Message +":" +e.Detail);
        }

        /// <summary>
        /// Shows the help.
        /// </summary>
        private static void ShowHelp()
        {
            Console.WriteLine("");
            Console.WriteLine("USAGE:");
            Console.WriteLine("     .exe [/? | /show]");

        }
    }
}
